package com.ruoyi.InventoryInfo.domain;

import java.math.BigDecimal;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 存货信息对象 inventory_info
 * 
 * @author ruoyi
 * @date 2025-03-12
 */
public class InventoryInfo extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** ID */
    private Long id;

    /** 存货编号 */
    @Excel(name = "存货编号")
    @NotBlank(message = "存货编号不能为空")
    private String inventoryCode;

    /** 存货名称 */
    @Excel(name = "存货名称")
    @NotBlank(message = "存货名称不能为空")
    private String inventoryName;

    /** 规格型号 */
    @Excel(name = "规格型号")
    private String specModel;

    /** 存货类型 */
    @Excel(name = "存货类型")

    private String inventoryType;

    /** 存货分类 */
    @Excel(name = "存货分类")
    private String inventoryCategory;

    /** 计价方式 */
    @Excel(name = "计价方式")
    private String pricingMethod;

    /** 主单位 */
    @Excel(name = "主单位")
    private String mainUnit;

    /** 当前库存 */
    @Excel(name = "当前库存")
    private Long currentStock;

    /** 最低库存 */
    @Excel(name = "最低库存")
    private Long minStock;

    /** 最高库存 */
    @Excel(name = "最高库存")
    private Long maxStock;

    /** 安全库存 */
    @Excel(name = "安全库存")
    private Long safetyStock;

    /** 状态 */
    @Excel(name = "状态")
    private String status;

    /** 商品用途（如：["开票商品"]） */
    @Excel(name = "商品用途")
    private String commodityUsage;

    /** 备注 */
    @Excel(name = "备注")
    private String remarks;

    /** 计量单位 */
    @Excel(name = "计量单位")
    @NotBlank(message = "计量单位不能为空")
    private String measurementUnit;

    /** 采购价 */
    @Excel(name = "采购价")
    @NotNull(message = "采购价不能为空")
    private BigDecimal purchasePrice;

    /** 销售价 */
    @Excel(name = "销售价")
    @NotNull(message = "销售价不能为空")
    private BigDecimal sellingPrice;

    /** 成本价 */
    @Excel(name = "成本价")
    @NotNull(message = "成本价不能为空")
    private BigDecimal costPrice;

    /** 支出多计量单位（JSON格式存储） */
    @Excel(name = "支出多计量单位")
    private String multiMeasurementUnit;
    @Excel(name = "期末结存存货成本")
    private String qmPrice;
    @Excel(name = "期初结存存货成本")
    private String qcPrice;
    @Excel(name = "当期购进存货成本")
    private String dqPrice;
    @Excel(name = "当期发出存货成本")
    private String fcPrice;

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setInventoryCode(String inventoryCode) 
    {
        this.inventoryCode = inventoryCode;
    }

    public String getInventoryCode() 
    {
        return inventoryCode;
    }

    public void setInventoryName(String inventoryName) 
    {
        this.inventoryName = inventoryName;
    }

    public String getInventoryName() 
    {
        return inventoryName;
    }

    public String getQmPrice() {
        return qmPrice;
    }

    public void setQmPrice(String qmPrice) {
        this.qmPrice = qmPrice;
    }

    public String getQcPrice() {
        return qcPrice;
    }

    public void setQcPrice(String qcPrice) {
        this.qcPrice = qcPrice;
    }

    public String getDqPrice() {
        return dqPrice;
    }

    public void setDqPrice(String dqPrice) {
        this.dqPrice = dqPrice;
    }

    public String getFcPrice() {
        return fcPrice;
    }

    public void setFcPrice(String fcPrice) {
        this.fcPrice = fcPrice;
    }

    public void setSpecModel(String specModel)
    {
        this.specModel = specModel;
    }

    public String getSpecModel() 
    {
        return specModel;
    }

    public void setInventoryType(String inventoryType) 
    {
        this.inventoryType = inventoryType;
    }

    public String getInventoryType() 
    {
        return inventoryType;
    }

    public void setInventoryCategory(String inventoryCategory) 
    {
        this.inventoryCategory = inventoryCategory;
    }

    public String getInventoryCategory() 
    {
        return inventoryCategory;
    }

    public void setPricingMethod(String pricingMethod) 
    {
        this.pricingMethod = pricingMethod;
    }

    public String getPricingMethod() 
    {
        return pricingMethod;
    }

    public void setMainUnit(String mainUnit) 
    {
        this.mainUnit = mainUnit;
    }

    public String getMainUnit() 
    {
        return mainUnit;
    }

    public void setCurrentStock(Long currentStock) 
    {
        this.currentStock = currentStock;
    }

    public Long getCurrentStock() 
    {
        return currentStock;
    }

    public void setMinStock(Long minStock) 
    {
        this.minStock = minStock;
    }

    public Long getMinStock() 
    {
        return minStock;
    }

    public void setMaxStock(Long maxStock) 
    {
        this.maxStock = maxStock;
    }

    public Long getMaxStock() 
    {
        return maxStock;
    }

    public void setSafetyStock(Long safetyStock) 
    {
        this.safetyStock = safetyStock;
    }

    public Long getSafetyStock() 
    {
        return safetyStock;
    }

    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    public void setCommodityUsage(String commodityUsage) 
    {
        this.commodityUsage = commodityUsage;
    }

    public String getCommodityUsage() 
    {
        return commodityUsage;
    }

    public void setRemarks(String remarks) 
    {
        this.remarks = remarks;
    }

    public String getRemarks() 
    {
        return remarks;
    }

    public void setMeasurementUnit(String measurementUnit) 
    {
        this.measurementUnit = measurementUnit;
    }

    public String getMeasurementUnit() 
    {
        return measurementUnit;
    }

    public void setPurchasePrice(BigDecimal purchasePrice) 
    {
        this.purchasePrice = purchasePrice;
    }

    public BigDecimal getPurchasePrice() 
    {
        return purchasePrice;
    }

    public void setSellingPrice(BigDecimal sellingPrice) 
    {
        this.sellingPrice = sellingPrice;
    }

    public BigDecimal getSellingPrice() 
    {
        return sellingPrice;
    }

    public void setCostPrice(BigDecimal costPrice) 
    {
        this.costPrice = costPrice;
    }

    public BigDecimal getCostPrice() 
    {
        return costPrice;
    }

    public void setMultiMeasurementUnit(String multiMeasurementUnit) 
    {
        this.multiMeasurementUnit = multiMeasurementUnit;
    }

    public String getMultiMeasurementUnit() 
    {
        return multiMeasurementUnit;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("inventoryCode", getInventoryCode())
            .append("inventoryName", getInventoryName())
            .append("specModel", getSpecModel())
            .append("inventoryType", getInventoryType())
            .append("inventoryCategory", getInventoryCategory())
            .append("pricingMethod", getPricingMethod())
            .append("mainUnit", getMainUnit())
            .append("currentStock", getCurrentStock())
            .append("minStock", getMinStock())
            .append("maxStock", getMaxStock())
            .append("safetyStock", getSafetyStock())
            .append("status", getStatus())
            .append("commodityUsage", getCommodityUsage())
            .append("remarks", getRemarks())
            .append("measurementUnit", getMeasurementUnit())
            .append("purchasePrice", getPurchasePrice())
            .append("sellingPrice", getSellingPrice())
            .append("costPrice", getCostPrice())
            .append("multiMeasurementUnit", getMultiMeasurementUnit())
                .append("qmPrice",getQmPrice())
                .append("qcPrice",getQcPrice())
                .append("dqPrice",getDqPrice())
                .append("fcPrice",getFcPrice())
            .toString();
    }
}
